<?php

class Reportes_model extends CI_Model{
	public function __construct()
	{
		parent::__construct();
	}
	
	public function insert($cedula,$nombre,$apellidos,$direccion,$telefono)
	{
		$sql="INSERT INTO PERSONAS(CODIGO,NOMBRE,APELLIDOS,DIRECCION,TELEFONO) VALUES(".$cedula.",'".$nombre."','".$apellidos."','".$direccion."','".$telefono."')";
		$this->db->query($sql);
		return 1;
	}
	
	public function reporteVotacionesPorDepartamento($departamento,$candidato)
	{
		
		$sql="select g.nombre DEPARTAMENTO,
NVL(TO_CHAR(sum(a.cantidadtestigo)),'Sin Registrar') CANTIDADTESTIGOS,
NVL(TO_CHAR(sum(a.cantidadvalidador)),'Sin Registrar') CANTIDADVALIDADOR 
from registrovotos a 
join mesas b on a.codigomesa=b.codigo 
join candidatos c on a.codigocandidato=c.codigo and a.codigocandidato=".$candidato."
join puestos d on b.codigopuesto=d.codigo
join zonas e on d.codigozona=e.codigo
join municipios f on e.codigomunicipio=f.codigo
join departamentos g on f.codigodepartamento=g.codigo and g.codigo=".$departamento."
GROUP BY g.nombre
order by g.nombre";
		
		
		
		
		
		$query=$this->db->query($sql);
		if($query->num_rows()>0){
			$ret=array();
			foreach($query->result_array() as $row){
				$ret[$row['DEPARTAMENTO']]['TESTIGO']=$row['CANTIDADTESTIGOS'];
				$ret[$row['DEPARTAMENTO']]['VALIDADOR']=$row['CANTIDADVALIDADOR'];
			}
			return $ret;
		}else{
			return false;
		}
	}
	
	public function reporteVotacionesPorDepMunicipio($departamento,$candidato)
	{
		$sql="SELECT DECODE (MUNICIPIO,NULL,'TOTAL',MUNICIPIO) MUNICIPIO, 
NVL(TO_CHAR(CANTIDADTESTIGOS),'Sin Registrar') CANTIDADTESTIGOS, 
NVL(TO_CHAR(CANTIDADVALIDADOR),'Sin Registrar') CANTIDADVALIDADOR  FROM (
select f.nombre MUNICIPIO,sum(a.cantidadtestigo) CANTIDADTESTIGOS,sum(a.cantidadvalidador) CANTIDADVALIDADOR from registrovotos a 
join mesas b on a.codigomesa=b.codigo 
join candidatos c on a.codigocandidato=c.codigo and c.codigo=".$candidato."
join puestos d on b.codigopuesto=d.codigo
join zonas e on d.codigozona=e.codigo
join municipios f on e.codigomunicipio=f.codigo
join departamentos g on f.codigodepartamento=g.codigo and g.codigo=".$departamento."
GROUP BY rollup(f.nombre)
order by f.nombre)DATOS";
		$query=$this->db->query($sql);
		
		if($query->num_rows()>0){
			$ret=array();
			$i=0;
			$cad="";
			foreach($query->result_array() as $row){
				$cad="";
				$cad="";
				foreach($row as $k=>$v)
				{
					$ret[$i][$k]=$v;
					if($i==0){
						$ret['indices'][]=$k;
					}
				}
				$i++;
			}
			//die();
			return $ret;
		}else{
			return false;
		}
	}
	
	
	public function reporteVotosRegistrados($candidato)
	{
		$sql="select g.nombre DEPARTAMENTO, f.nombre MUNICIPIO,e.nombre ZONA,d.nombre PUESTO,
NVL(b.nombre,'TOTAL') MESAS,
NVL(TO_CHAR(sum(a.cantidadtestigo)),'Sin Registrar') CANTIDADTESTIGOS,
NVL(TO_CHAR(sum(a.cantidadvalidador)),'Sin Registrar') CANTIDADVALIDADOR
from registrovotos a
join mesas b on a.codigomesa=b.codigo 
join candidatos c on a.codigocandidato=c.codigo and c.codigo=".$candidato."
join puestos d on b.codigopuesto=d.codigo
join zonas e on d.codigozona=e.codigo
join municipios f on e.codigomunicipio=f.codigo
join departamentos g on f.codigodepartamento=g.codigo
GROUP BY CUBE (g.nombre, f.nombre,e.nombre,d.nombre,b.nombre)
HAVING GROUPING_ID(g.nombre, f.nombre,e.nombre,d.nombre,b.nombre) = 0 OR
GROUPING_ID(g.nombre, f.nombre,e.nombre,d.nombre,b.nombre) = 7
order by g.nombre, f.nombre,e.nombre,d.nombre,b.nombre";
		$query=$this->db->query($sql);
	
		if($query->num_rows()>0){
			$ret=array();
			$i=0;
			$cad="";
			foreach($query->result_array() as $row){
				$cad="";
				$cad="";
				foreach($row as $k=>$v)
				{
					$ret[$i][$k]=$v;
					if($i==0){
						$ret['indices'][]=$k;
					}
				}
				$i++;
			}
			//die();
			return $ret;
		}else{
			return false;
		}
	}

	
	
	public function reporteVotosNoRegistrados($departamento,$municipio)
	{
		if($municipio!=0)
		{
		$sql="select a.nombre MUNICIPIO,c.nombre PUESTO,d.nombre MESA,'VOTOS_NO_REGISTRADOS' from municipios a join zonas b on a.codigo=b.codigomunicipio join puestos c on b.codigo=c.codigozona join mesas d on c.codigo=d.codigopuesto
left join registrovotos e on( d.codigo = e.codigomesa) where e.codigomesa is null AND a.codigo=".$municipio."";
		}else
		{
		$sql="select a.nombre MUNICIPIO,c.nombre PUESTO,d.nombre MESA,'VOTOS_NO_REGISTRADOS' from municipios a join zonas b on a.codigo=b.codigomunicipio join puestos c on b.codigo=c.codigozona join mesas d on c.codigo=d.codigopuesto
left join registrovotos e on( d.codigo = e.codigomesa) JOIN departamentos f on a.codigodepartamento=f.codigo where e.codigomesa is null AND f.codigo=".$departamento."";
		}
		$query=$this->db->query($sql);
	
		if($query->num_rows()>0){
			$ret=array();
			$i=0;
			$cad="";
			foreach($query->result_array() as $row){
				$cad="";
				$cad="";
				foreach($row as $k=>$v)
				{
					$ret[$i][$k]=$v;
					if($i==0){
						$ret['indices'][]=$k;
					}
				}
				$i++;
			}
			//die();
			return $ret;
		}else{
			return false;
		}
	}
	public function insertUsuario($cedula,$codigoPerfil,$clave)
	{
		$sql="INSERT INTO USUARIOS(CODIGOPERSONA,CODIGOPERFIL,FECHA,CLAVE) VALUES(".$cedula.",'".$codigoPerfil."',SYSDATE,'".$clave."')";
		$this->db->query($sql);
		print_r($sql);
		return 1;
	}
	
	public function insertTestigo($cedula)
	{
		$sql="INSERT INTO TESTIGOS(CODIGOPERSONA,FECHA) VALUES(".$cedula.",SYSDATE)";
		$this->db->query($sql);
		return 1;
	}

	public function reporteboletin($tipoboletin,$departamento,$municipio)
	{
	if($tipoboletin ==0)
	{
		$sql="SELECT B.DESCRIPCION BOLETIN,
				c.nombre CANDIDATO, D.CANTIDADREGISTROS VOTOS, D.PORCENEXCLUTADO PORCENTAJE
				FROM DETALLESBOLETINES D
				INNER JOIN tipoboletin t ON d.codigo = t.codigolinea
				INNER JOIN candidatos c ON d.codigocandidato = c.codigo 
				INNER JOIN BOLETINES b ON  D.CODIGOBOLETIN = b.codigo
				WHERE t.codigopais = 1 and t.codigodepartamento = 00 and t.codigomunicipio = 00000 AND D.TIPO = 0"; //WHERE b.tipoboletin = ".$tipoboletin."";
	}
	else if ($tipoboletin ==1)
	{
		$sql="SELECT B.DESCRIPCION BOLETIN, dep.nombre DEPARTAMENTO, --M.NOMBRE MUNICIPIO, 
				c.nombre CANDIDATO, D.CANTIDADREGISTROS VOTOS, D.PORCENEXCLUTADO PORCENTAJE
				FROM DETALLESBOLETINES D
				INNER JOIN tipoboletin t ON d.codigo = t.codigolinea
				INNER JOIN candidatos c ON d.codigocandidato = c.codigo 
				INNER JOIN BOLETINES b ON  D.CODIGOBOLETIN = b.codigo
				INNER JOIN DEPARTAMENTOS DEP  on t.codigodepartamento=dep.codigo
				WHERE t.codigopais = 1 and t.codigodepartamento = ".$departamento." and t.codigomunicipio = 00000 AND D.TIPO = 1"; //WHERE b.tipoboletin = ".$tipoboletin."";
	}
	else
	{
		$sql="SELECT B.DESCRIPCION BOLETIN, dep.nombre DEPARTAMENTO, M.NOMBRE MUNICIPIO, 
				c.nombre CANDIDATO, D.CANTIDADREGISTROS VOTOS, D.PORCENEXCLUTADO PORCENTAJE
				FROM DETALLESBOLETINES D
				INNER JOIN tipoboletin t ON d.codigo = t.codigolinea
				INNER JOIN candidatos c ON d.codigocandidato = c.codigo 
				INNER JOIN BOLETINES b ON  D.CODIGOBOLETIN = b.codigo
				INNER JOIN DEPARTAMENTOS DEP  on t.codigodepartamento=dep.codigo
				INNER JOIN MUNICIPIOS M ON T.CODIGOMUNICIPIO=M.CODIGO
				WHERE t.codigopais = 1 and t.codigodepartamento = ".$departamento." and t.codigomunicipio = ".$municipio." AND D.TIPO = 2"; //WHERE b.tipoboletin = ".$tipoboletin."";
	}
	$query=$this->db->query($sql);
	
		if($query->num_rows()>0){
			$ret=array();
			$i=0;
			$cad="";
			foreach($query->result_array() as $row){
				$cad="";
				$cad="";
				foreach($row as $k=>$v)
				{
					$ret[$i][$k]=$v;
					if($i==0){
						$ret['indices'][]=$k;
					}
				}
				$i++;
			}
			//die();
			return $ret;
		}else{
			return false;
		}
	}
	

	public function reporteComparacion($tipoboletin,$departamento,$municipio)
	{
	
		if($tipoboletin ==0)
		{
		$sql="
		SELECT   nvl(bol.descripcion,'Sin Boletin')
DESCRIPCION, ASPIRACION, NOMBRE, 
NVL(to_char(VOTOS_REGITRADOS),'Sin Registrar') VOTOS_REGITRADOS, 
NVL(to_char(BOLETIN),'Sin Registrar') BOLETIN, NVL(to_char(PORCENTAJE),'Sin Registrar') PORCENTAJE
FROM(
SELECT A.codigocandidato CANDIDATO, c.nombre NOMBRE, h.nombre ASPIRACION, g.codigo DEPARTAMENTO, f.codigo MUNICIPIO, sum(cantidadtestigo) VOTOS_REGITRADOS
from registrovotos a
join mesas b on a.codigomesa=b.codigo 
join candidatos c on a.codigocandidato=c.codigo
join aspiraciones h on c.codigoaspiracion = h.codigo
join puestos d on b.codigopuesto=d.codigo
join zonas e on d.codigozona=e.codigo
join municipios f on e.codigomunicipio=f.codigo
join departamentos g on f.codigodepartamento=g.codigo
group by cube (A.codigocandidato,c.nombre, h.nombre, g.codigo, f.codigo)
HAVING GROUPING_ID(A.codigocandidato,c.nombre, h.nombre, g.codigo, f.codigo)=3) REGVOTOS
left JOIN
(
SELECT B.DESCRIPCION DESCRIPCION, NUMBOL.CODCAN CANDIDATO, NUMBOL.BOL BOLETIN, DET.PORCENEXCLUTADO PORCENTAJE   FROM
(SELECT MAX(CODIGOBOLETIN) BOL, D.CODIGOCANDIDATO CODCAN
FROM DETALLESBOLETINES D
INNER JOIN CANDIDATOS C ON D.CODIGOCANDIDATO = C.CODIGO
GROUP BY D.CODIGOCANDIDATO,CODIGOASPIRACION)NUMBOL
INNER JOIN DETALLESBOLETINES DET ON DET.CODIGOBOLETIN = NUMBOL.BOL AND DET.CODIGOCANDIDATO = NUMBOL.CODCAN
INNER JOIN BOLETINES B ON B.CODIGO = DET.CODIGOBOLETIN
INNER JOIN TIPOBOLETIN T ON DET.codigo = t.codigolinea
WHERE DET.TIPO = 0
AND t.codigopais = 1 and t.codigodepartamento=00 and t.codigomunicipio=00000
) BOL
ON REGVOTOS.CANDIDATO = BOL.CANDIDATO
		";
		
		}
		else if ($tipoboletin ==1)
		{
		$sql="SELECT   nvl(bol.descripcion,'Sin Boletin')
DESCRIPCION, ASPIRACION, NOMBRE, 
NVL(to_char(VOTOS_REGITRADOS),'Sin Registrar') VOTOS_REGITRADOS, 
NVL(to_char(BOLETIN),'Sin Registrar') BOLETIN, NVL(to_char(PORCENTAJE),'Sin Registrar') PORCENTAJE
FROM(
SELECT A.codigocandidato CANDIDATO, c.nombre NOMBRE, h.nombre ASPIRACION, g.codigo DEPARTAMENTO, f.codigo MUNICIPIO, sum(cantidadtestigo) VOTOS_REGITRADOS
from registrovotos a
join mesas b on a.codigomesa=b.codigo 
join candidatos c on a.codigocandidato=c.codigo
join aspiraciones h on c.codigoaspiracion = h.codigo
join puestos d on b.codigopuesto=d.codigo
join zonas e on d.codigozona=e.codigo
join municipios f on e.codigomunicipio=f.codigo
join departamentos g on f.codigodepartamento=g.codigo
group by cube (A.codigocandidato,c.nombre, h.nombre, g.codigo, f.codigo)
HAVING GROUPING_ID(A.codigocandidato,c.nombre, h.nombre, g.codigo, f.codigo)=3) REGVOTOS
left JOIN
(
SELECT B.DESCRIPCION DESCRIPCION, NUMBOL.CODCAN CANDIDATO, NUMBOL.BOL BOLETIN, DET.PORCENEXCLUTADO PORCENTAJE   FROM
(SELECT MAX(CODIGOBOLETIN) BOL, D.CODIGOCANDIDATO CODCAN
FROM DETALLESBOLETINES D
INNER JOIN CANDIDATOS C ON D.CODIGOCANDIDATO = C.CODIGO
GROUP BY D.CODIGOCANDIDATO,CODIGOASPIRACION)NUMBOL
INNER JOIN DETALLESBOLETINES DET ON DET.CODIGOBOLETIN = NUMBOL.BOL AND DET.CODIGOCANDIDATO = NUMBOL.CODCAN
INNER JOIN BOLETINES B ON B.CODIGO = DET.CODIGOBOLETIN
INNER JOIN TIPOBOLETIN T ON DET.codigo = t.codigolinea
WHERE DET.TIPO = 0
AND t.codigopais = 1 and t.codigodepartamento=".$departamento." and t.codigomunicipio=00000
) BOL
ON REGVOTOS.CANDIDATO = BOL.CANDIDATO";
			
		}
		else
		{
		$sql="SELECT   nvl(bol.descripcion,'Sin Boletin')
DESCRIPCION, ASPIRACION, NOMBRE, 
NVL(to_char(VOTOS_REGITRADOS),'Sin Registrar') VOTOS_REGITRADOS, 
NVL(to_char(BOLETIN),'Sin Registrar') BOLETIN, NVL(to_char(PORCENTAJE),'Sin Registrar') PORCENTAJE
FROM(
SELECT A.codigocandidato CANDIDATO, c.nombre NOMBRE, h.nombre ASPIRACION, g.codigo DEPARTAMENTO, f.codigo MUNICIPIO, sum(cantidadtestigo) VOTOS_REGITRADOS
from registrovotos a
join mesas b on a.codigomesa=b.codigo 
join candidatos c on a.codigocandidato=c.codigo
join aspiraciones h on c.codigoaspiracion = h.codigo
join puestos d on b.codigopuesto=d.codigo
join zonas e on d.codigozona=e.codigo
join municipios f on e.codigomunicipio=f.codigo
join departamentos g on f.codigodepartamento=g.codigo
group by cube (A.codigocandidato,c.nombre, h.nombre, g.codigo, f.codigo)
HAVING GROUPING_ID(A.codigocandidato,c.nombre, h.nombre, g.codigo, f.codigo)=3) REGVOTOS
left JOIN
(
SELECT B.DESCRIPCION DESCRIPCION, NUMBOL.CODCAN CANDIDATO, NUMBOL.BOL BOLETIN, DET.PORCENEXCLUTADO PORCENTAJE   FROM
(SELECT MAX(CODIGOBOLETIN) BOL, D.CODIGOCANDIDATO CODCAN
FROM DETALLESBOLETINES D
INNER JOIN CANDIDATOS C ON D.CODIGOCANDIDATO = C.CODIGO
GROUP BY D.CODIGOCANDIDATO,CODIGOASPIRACION)NUMBOL
INNER JOIN DETALLESBOLETINES DET ON DET.CODIGOBOLETIN = NUMBOL.BOL AND DET.CODIGOCANDIDATO = NUMBOL.CODCAN
INNER JOIN BOLETINES B ON B.CODIGO = DET.CODIGOBOLETIN
INNER JOIN TIPOBOLETIN T ON DET.codigo = t.codigolinea
WHERE DET.TIPO = 0
AND t.codigopais = 1 and t.codigodepartamento=".$departamento." and t.codigomunicipio=".$municipio."
) BOL
ON REGVOTOS.CANDIDATO = BOL.CANDIDATO";
				
		}
		$query=$this->db->query($sql);
	
		if($query->num_rows()>0){
			$ret=array();
			$i=0;
			$cad="";
			foreach($query->result_array() as $row){
				$cad="";
				$cad="";
				foreach($row as $k=>$v)
				{
					$ret[$i][$k]=$v;
					if($i==0){
						$ret['indices'][]=$k;
					}
				}
				$i++;
			}
			//die();
			return $ret;
		}else{
			return false;
		}
	}
	
	
	public function reportevalidador($municipio)
	{
		$sql="select d.NOMBRE DEPARTAMENTO, mu.NOMBRE MUNICIPIO, p.NOMBRE PUESTO, m.NOMBRE MESA, c.nombre CANDIDATO, CANTIDADTESTIGO, CANTIDADVALIDADOR,
				mm.NOMBRE ||' '|| mm.APELLIDOS NOMBRE_VALIDADOR
				from registrovotos r
				inner join mesas m on r.codigomesa=m.codigo
				inner join puestos p on m.codigopuesto=p.codigo
				inner join zonas z on p.codigozona=z.codigo
				inner join municipios mu on z.codigomunicipio=mu.codigo
				inner join departamentos d on mu.codigodepartamento=d.codigo
				inner join candidatos c on r.codigocandidato=c.codigo
				left join personas mm on mm.codigo= r.CODIGOVALIDADOR
				where (cantidadtestigo<>cantidadvalidador and cantidadtestigo<>0 and cantidadvalidador<>0) and mu.codigo = ".$municipio."";
		$query=$this->db->query($sql);
	
		if($query->num_rows()>0){
			$ret=array();
			$i=0;
			$cad="";
			foreach($query->result_array() as $row){
				$cad="";
				$cad="";
				foreach($row as $k=>$v)
				{
					$ret[$i][$k]=$v;
					if($i==0){
						$ret['indices'][]=$k;
					}
				}
				$i++;
			}
			//die();
			return $ret;
		}else{
			return false;
		}
	}
}
